using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace Rocuna.Physics.Interfaces
{
    /// <summary>
    /// Contract for collidable objects.
    /// </summary>
    public interface ICollidable
    {
        /// <summary>
        /// Gets the center of mass of this <see cref="ICullable"/>.
        /// </summary>
        Vector3 CenterOfMass { get; }

        /// <summary>
        /// Gets the bounding radius of this <see cref="ICollidable"/>.
        /// </summary>
        float BoundingRadius { get; }

        /// <summary>
        /// Collides by the sphere.
        /// </summary>
        /// <param name="other">The other <see cref="ICollidable"/>.</param>
        /// <returns></returns>
        bool CollideSphere(Model other);

        /// <summary>
        /// Collides by the polygon.
        /// </summary>
        /// <param name="point1">The first point of the polygon.</param>
        /// <param name="point2">The second point of the polygon.</param>
        /// <param name="point3">The third point of the polygon.</param>
        /// <returns></returns>
        bool CollidePolygon(Vector3 point1, Vector3 point2, Vector3 point3);
    }
}